<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    /*对象：具体的事物，包括属性和行为
        属性：对象中的变量； 行为：属性中的方法(函数)
    如何创建对象？
        1.字面量创建对象，使用较多
        2.用构造函数创建对象、
        3.用Object()创建对象
    */
   //字面量创建对象
   let cat={
    color:'white',
    eye:'blue',
    weight:'15kg',
    run:function(){
        console.log('running');
    }
   };
   //访问对象
   console.log(cat.color); //打印猫的颜色
   cat.run();
   let kq={};  //空对象
   console.log('---用构造函数创建对象---');
   //构造函数：是一种特殊的函数，能通过这个函数构造一个对象。为区别于普通函数，一般构造函数名的首字母大写。
   /*step1:定义一个构造函数，在函数中描述对象属性和行为
     step2:用关键字new实列化一个对象
   */
  function Dog(name,age,weight,color){
    //this关键字:指当前对象
    this.name=name;
    this.age=age;
    this.weight=weight;
    this.color=color;
    this.dance=function(){
        console.log(`${this.name}在跳舞....`);
    }
  }
  //构造对象
  let dog=new Dog('富贵',2,'10kg','白色');
  console.log(dog.name);
  console.log(dog.color);
  dog.dance();

  let wang=new Dog('旺财',3,'15kg','棕色');
  console.log(wang.weight);
  wang.dance();
  console.log('---用Object()创建对象---');
  let obj=new Object(); //实例化一个空的Object
  obj.name='lihua';
  obj.age=19;
  obj.cls='计算机三班';
  obj.play=function(){
    console.log(obj.name+"在打游戏");
  };
  //访问对象
  console.log(obj.cls);
  obj.play();
  console.log('----------');
  let news={
    title:'上海：为世界城市提供三大“公共产品”',
    date:'2024.10.31',
    author:'王永前，姚玉洁，周瑞，的报道',
    content:'新华社北京10月301日电 。。报道。。。',
    read:function(){
        console.log('start:'+this.content);
    }
  }
  console.log(news.title);
  news.read();
  console.log(news['author']);
  console.log('----------');
  //遍历对象for...in
  for(let i in news){
    console.log(i);  //获取该对象中所有属性和方法的名
    //判断获取的值的数据类型是否为function，如果是则应该调用方法
    console.log(news[i]); //获取该对象中所有属性和方法的值
  }
</script>
</html>